from PySide6.QtWidgets import QMainWindow,QFrame,QMenu,QApplication
from custom_menu import FileMenu,EditMenu
from custom_plain_text_edit import PlainTextEdit
import sys

class NotepadMain(QMainWindow):
    """记事本主界面

    :param QMainWindow: 主窗口
    """
    def __init__(self):
        """初始化
        """
        super().__init__()
        self.setup_ui()
        self.set_event_bind()

    def setup_ui(self):
        """设置用户界面
        """
        # 设置窗口标题
        self.setWindowTitle("记事本主界面")

        # 设置窗口大小
        self.resize(800, 500)
        
        # 创建菜单栏 设置为私有属性
        self.__menubar = self.menuBar()
        
        # 实例化自定义菜单
        file_menu = FileMenu()
        self.edit_menu = EditMenu()

        # 添加其他自定义的菜单
        self.__menubar.addMenu(file_menu)
        self.__menubar.addMenu(self.edit_menu)

        # 示例化纯文本编辑 
        self.plain_text_edit = PlainTextEdit()
        
        # 消除框线
        self.plain_text_edit.setFrameShape(QFrame.Shape.NoFrame)

        # 添加纯文本编辑到 中心窗口
        self.setCentralWidget(self.plain_text_edit)

        # 添加状态栏目
        self.statusBar()

    def set_event_bind(self):
        """设置事件绑定
        """
        self.edit_menu.set_event_bind(self.plain_text_edit)
        
if __name__ == "__main__":
    app = QApplication(sys.argv)
    # 添加其他菜单
    notepad_main = NotepadMain()
    notepad_main.show()
    sys.exit(app.exec())
